package com.yx.changdao.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.github.liaochong.myexcel.core.annotation.IgnoreColumn;
import com.yx.changdao.common.annotation.AutoFill;
import com.yx.changdao.common.utils.SysUtils;
import com.yx.changdao.common.valid.ScoreExport;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.Date;

@TableName(Problem.TABLE_NAME)
@ExcelModel(excludeParent = true, ignoreStaticFields = true)

@Setter
@Getter
public class Problem implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 数据库名
     */
    public static final String TABLE_NAME = "problem";

    /**
     * 问题id
     */
    public static final String ID = "id";
    /**
     * 问题信息id
     */
    public static final String PROBLEM_INFO_ID = "problem_info_id";
    /**
     * 反馈居民姓名
     */
    public static final String RESIDENT_NAME = "resident_name";
    /**
     * 反馈居民手机号
     */
    public static final String RESIDENT_PHONE = "resident_phone";
    /**
     * 反馈居民地址
     */
    public static final String RESIDENT_ADDRESS = "resident_address";
    /**
     * 反馈居民身份证号
     */
    public static final String RESIDENT_IDCARD = "resident_idcard";
    /**
     * 意见建议类别(意见建议类、自主解决问题类、派单解决问题类)
     */
    public static final String CATEGORY = "category";
    /**
     * 意见建议行业类别(教育、医疗、旅游、渔业、交通、宜居环境、社会治安、社会保障、政务服务、文化生活、其他)
     */
    public static final String INDUSTRY_CATEGORY = "industry_category";
    /**
     * 办理难度(简单 一般 困难 受限)
     */
    public static final String DIFFICULT_LEVEL = "difficult_level";
    /**
     * 办理难度状态(0-未提交申请 1-待审核 2-通过 3-拒绝)
     */
    public static final String DIFFICULT_LEVEL_STATUS = "difficult_level_status";

    /**
     * 办理难度状态通过时间(签收时间)
     */
    public static final String DIFFICULT_LEVEL_PASS_TIME = "difficult_level_pass_time";
    /**
     * 楼编号
     */
    public static final String BUILD_CODE = "build_code";
    /**
     * 单元号
     */
    public static final String UNIT = "unit";
    /**
     * 室号(门牌号)
     */
    public static final String DOOR_PLATE = "door_plate";
    /**
     * 是否关联户(0-没关联 1-关联)
     */
    public static final String IF_RELATION_BUILD_DETAIL = "if_relation_build_detail";
    /**
     * 网格id
     */
    public static final String GRID_ID = "grid_id";
    /**
     * 楼名称
     */
    public static final String BUILD_NAME = "build_name";
    /**
     * 户id
     */
    public static final String BUILD_DETAIL_ID = "build_detail_id";
    /**
     * 意见建议内容
     */
    public static final String CONTENT = "content";
    /**
     * 联户人小组id
     */
    public static final String CONTACT_GROUP_ID = "contact_group_id";
    /**
     * 联户人小组名称
     */
    public static final String CONTACT_GROUP_NAME = "contact_group_name";
    /**
     * 联户人姓名(多个人名用,分隔)
     */
    public static final String CONTACT_NAMES = "contact_names";

    /**
     * 是否上报给管理员 (0-未上报 1-已上报  3-打回)
     */
    public static final String IF_REPORT_MANAGER = "if_report_manager";
    /**
     * 是否上报(0-未上报 1-待审核 2-通过 3-打回 此处状态只可能是2)
     */
    public static final String IF_REPORT = "if_report";
    /**
     * 上报部门id
     */
    public static final String REPORT_DEP_ID = "report_dep_id";
    /**
     * 上报部门名称
     */
    public static final String REPORT_DEP_NAME = "report_dep_name";
    /**
     * 上报时间(此处上报时间,只可能是上报审核通过的时间)
     */
    public static final String REPORT_TIME = "report_time";
    /**
     * 提报人id(problem_info中的create_by)
     */
    public static final String SUBMITTER_BY = "submitter_by";
    /**
     * 提报人名(problem_info中的create_by_name)
     */
    public static final String SUBMITTER_BY_NAME = "submitter_by_name";
    /**
     * 提报时间(problem_info中的create_time)
     */
    public static final String SUBMITTER_TIME = "submitter_time";
    /**
     * 是否分配(0-未分配 1-已分配,此处只能是已分配)
     */
    public static final String IF_ASSIGN = "if_assign";
    /**
     * 分配时间
     */
    public static final String ASSIGN_TIME = "assign_time";
    /**
     * 承办单位(部门id)
     */
    public static final String DEP_ID = "dep_id";
    /**
     * 承办单位名称(部门名称)
     */
    public static final String DEP_NAME = "dep_name";
    /**
     * 是否疑难件(0-非疑难件 1-疑难件)
     */
    public static final String IF_DIFFICULT = "if_difficult";
    /**
     * 是否办结(0-未办结 1-已办结 2-挂起)
     */
    public static final String IF_END = "if_end";
    /**
     * 是否处理(0-未处理 1-已处理 2-打回处理)
     */
    public static final String IF_DEAL = "if_deal";
    /**
     * 处理时间(上传处理结果的时间,每次上传都更新)
     */
    public static final String DEAL_TIME = "deal_time";
    /**
     * 处理人姓名
     */
    public static final String DEAL_USERNAME = "deal_username";
    /**
     * 办理时限(办理截至日期,超过算逾期)
     */
    public static final String DEAL_LIMIT_TIME = "deal_limit_time";
    /**
     * 是否逾期(0-未逾期 1-已逾期 2-即将逾期 设置定时任务,暂时每天执行一次)
     */
    public static final String IF_TIMEOUT = "if_timeout";
    /**
     * 是否延期(0-未延期 1-已延期)
     */
    public static final String IF_DELAY = "if_delay";
    /**
     * 是否评价(0-未评价 1-已评价)
     */
    public static final String IF_ASSESS = "if_assess";
    /**
     * 评价结果(0-未评价 1-满意 2-基本满意 3-不满意)
     */
    public static final String ASSESS_RESULT = "assess_result";

    public static final String ASSESS_TIME = "assess_time";
    /**
     * 创建时间
     */
    public static final String CREATE_TIME = "create_time";
    /**
     * 创建人
     */
    public static final String CREATE_BY_NAME = "create_by_name";
    /**
     * 创建人id
     */
    public static final String CREATE_BY = "create_by";
    /**
     * 更新时间
     */
    public static final String UPDATE_TIME = "update_time";
    /**
     * 更新人
     */
    public static final String UPDATE_BY_NAME = "update_by_name";
    /**
     * 更新人id
     */
    public static final String UPDATE_BY = "update_by";
    /**
     * 办理难度提交时间
     */
    public static final String DIFFICULT_LEVEL_SUBMIT_TIME = "difficult_level_submit_time";
    /**
     * 联户人1姓名
     */
    public static final String CONTACT1_NAME = "contact1_name";
    /**
     * 联户人1手机号
     */
    public static final String CONTACT1_PHONE = "contact1_phone";
    /**
     * 联户人2姓名
     */
    public static final String CONTACT2_NAME = "contact2_name";
    /**
     * 联户人2手机号
     */
    public static final String CONTACT2_PHONE = "contact2_phone";

    /**
     * 疑难件申请状态(0,未申请,1申请中,2 通过,3 打回)
     */
    public static final String DIFFICULT_STATUS = "difficult_status";
    /**
     * 问题处理人手机号
     */
    public static final String DEAL_PHONE = "deal_phone";
    /**
     * 反馈居民性别
     */
    public static final String RESIDENT_SEX = "resident_sex";
    /**
     * 分配意见
     */
    public static final String ASSIGN_OPINION = "assign_opinion";

    /**
     * 问题id
     */
    @TableId(type = IdType.AUTO)
    @ExcelColumn(index = 0, title = "序号",groups = ScoreExport.class)
    private Integer id;
    /**
     * 问题信息id
     */
    @IgnoreColumn
    private Integer problemInfoId;
    /**
     * 反馈居民姓名
     */
    @ExcelColumn(index = 1, title = "反馈居民姓名",groups = ScoreExport.class)
    private String residentName;
    /**
     * 反馈居民手机号
     */
    @ExcelColumn(index = 2, title = "反馈居民手机号",groups = ScoreExport.class)
    private String residentPhone;
    /**
     * 反馈居民地址
     */
    @ExcelColumn(index = 3, title = "反馈居民地址",groups = ScoreExport.class)
    private String residentAddress;
    /**
     * 反馈居民身份证号
     */
    @IgnoreColumn
    private String residentIdcard;
    /**
     * 意见建议类别(意见建议类、自主解决问题类、派单解决问题类)
     */
    @ExcelColumn(index = 4, title = "意见建议类别",groups = ScoreExport.class)
    private String category;
    /**
     * 意见建议行业类别(教育、医疗、旅游、渔业、交通、宜居环境、社会治安、社会保障、政务服务、文化生活、其他)
     */
    @ExcelColumn(index = 5, title = "意见建议行业类别",groups = ScoreExport.class)
    private String industryCategory;
    /**
     * 办理难度(简单 一般 困难 受限)
     */
    @ExcelColumn(index = 6, title = "办理难度",groups = ScoreExport.class)
    private String difficultLevel;
    /**
     * 办理难度状态(0-未提交申请 1-待审核 2-通过 3-拒绝)
     */
    @IgnoreColumn
    private Integer difficultLevelStatus;
    /**
     * 办理难度提交时间
     */
    private Date difficultLevelSubmitTime;
    /**
     * 办理难度状态通过时间(签收时间)
     */
    @IgnoreColumn
    private Date difficultLevelPassTime;
    /**
     * 楼编号
     */
    @IgnoreColumn
    private String buildCode;
    /**
     * 单元号
     */
    @IgnoreColumn
    private Integer unit;
    /**
     * 室号(门牌号)
     */
    @IgnoreColumn
    private String doorPlate;
    /**
     * 是否关联户(0-没关联 1-关联)
     */
    @IgnoreColumn
    private Integer ifRelationBuildDetail;
    /**
     * 网格id
     */
    @IgnoreColumn
    private Integer gridId;
    /**
     * 楼名称
     */
    @IgnoreColumn
    private String buildName;
    /**
     * 户id
     */
    @IgnoreColumn
    private Integer buildDetailId;
    /**
     * 意见建议内容
     */
    @ExcelColumn(index = 7, title = "意见建议内容",groups = ScoreExport.class)
    private String content;
    /**
     * 联户人小组id
     */
    private Integer contactGroupId;
    /**
     * 联户人小组名称
     */
    private String contactGroupName;
    /**
     * 联户人姓名(多个人名用,分隔)
     */
    private String contactNames;

    /**
     * 是否上报给管理员 (0-未上报 1-已上报  3-打回)
     */
    private Integer ifReportManager;
    /**
     * 是否上报(0-未上报 1-待审核 2-通过 3-打回 此处状态只可能是2)
     */
    private Integer ifReport;
    /**
     * 上报部门id
     */
    private Integer reportDepId;
    /**
     * 上报部门名称
     */
    private String reportDepName;
    /**
     * 上报时间(此处上报时间,只可能是上报审核通过的时间)
     */
    private Date reportTime;
    /**
     * 提报人id(problem_info中的create_by)
     */
    private String submitterBy;
    /**
     * 提报人名(problem_info中的create_by_name)
     */
    private String submitterByName;
    /**
     * 提报时间(problem_info中的create_time)
     */
    private Date submitterTime;
    /**
     * 是否分配(0-未分配 1-已分配,此处只能是已分配)
     */
    private Integer ifAssign;
    /**
     * 分配时间
     */
    private Date assignTime;
    /**
     * 承办单位(部门id)
     */
    private Integer depId;
    /**
     * 承办单位名称(部门名称)
     */
    private String depName;
    /**
     * 是否疑难件(0-非疑难件 1-疑难件)
     */
    private Integer ifDifficult;
    /**
     * 疑难件申请状态(0,未申请,1申请中,2 通过,3 打回)
     */
    private Integer difficultStatus;
    /**
     * 是否办结(0-未办结 1-已办结 2-挂起)
     */
    private Integer ifEnd;
    /**
     * 是否处理(0-未处理 1-已处理 2-打回处理)
     */
    private Integer ifDeal;
    /**
     * 处理时间(上传处理结果的时间,每次上传都更新)
     */
    private Date dealTime;
    /**
     * 处理人姓名
     */
    private String dealUsername;
    /**
     * 办理时限(办理截至日期,超过算逾期)
     */
    private Date dealLimitTime;
    /**
     * 是否逾期(0-未逾期 1-已逾期 2-即将逾期 设置定时任务,暂时每天执行一次)
     */
    private Integer ifTimeout;
    /**
     * 是否延期(0-未延期 1-已延期)
     */
    private Integer ifDelay;
    /**
     * 是否评价(0-未评价 1-已评价)
     */
    private Integer ifAssess;
    /**
     * 评价结果(0-未评价 1-满意 2-基本满意 3-不满意)
     */
    private Integer assessResult;
    /**
     * 评价时间
     */
    private Date assessTime;
    /**
     * 创建时间
     */
    @AutoFill
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 创建人
     */
    @AutoFill(klass = SysUtils.class, method = "currentUserName")
    @TableField(fill = FieldFill.INSERT)
    private String createByName;
    /**
     * 创建人id
     */
    @AutoFill(klass = SysUtils.class, method = "currentUserId")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    /**
     * 更新时间
     */
    @AutoFill
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 更新人
     */
    @AutoFill(klass = SysUtils.class, method = "currentUserName")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateByName;
    /**
     * 更新人id
     */
    @AutoFill(klass = SysUtils.class, method = "currentUserId")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    /**
     * 是否上报
     */
    @TableField(exist = false)
    private String ifReportName;

    /**
     * 联户人1姓名
     */
    @IgnoreColumn
    private String contact1Name;
    /**
     * 联户人1手机号
     */
    @IgnoreColumn
    private String contact1Phone;
    /**
     * 联户人2姓名
     */
    @IgnoreColumn
    private String contact2Name;
    /**
     * 联户人2手机号
     */
    @IgnoreColumn
    private String contact2Phone;

    /**
     * 当前处理人电话
     */
    private String dealPhone;
    /**
     * 反馈居民性别
     */
    private String residentSex;
    /**
     * 分配意见
     */
    private String assignOpinion;


}
